package daohibernate;

import java.util.List;

import hibernate.HibernateUtil;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import entities.Presupuesto;

public class PresupuestoDAO {
	private static PresupuestoDAO instancia = null;
	private static SessionFactory sf = null;	
	
	public static PresupuestoDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new PresupuestoDAO();
		} 
		return instancia;
	}
	
	
	public void grabarPresupuesto(Presupuesto f){
		Session s = HibernateUtil.getSessionFactory().openSession();
		s.beginTransaction();	
		System.out.println("Antes de persistir presupuesto");		
		s.merge(f); //s.persist(f);
		System.out.println("luego de persistir presupuesto");			
		s.flush();
		s.getTransaction().commit();
		s.close();
	}
	
	public Presupuesto ObtenerPresupuesto(int idPre){
		Session s = sf.openSession();

		@SuppressWarnings("unchecked")
		List<Presupuesto> pres =  s.createQuery("from Presupuesto where idPresupuesto = " + idPre).list();
		s.close();
		
		for(Presupuesto p : pres){
			return p;
		}
		
		return null;
		
	}
	
	public List<Presupuesto> getPresupuestosPorCuil(String cuilref, String estadoRef)
	{
		Session s = sf.openSession();

		@SuppressWarnings("unchecked")
		List<Presupuesto> pres = s.createQuery("from Presupuesto where cuil = " + cuilref + " and estado = '" + estadoRef + "'" ).list();
		s.close();
		return pres;
		
	}
	
	
	
}
